[c]运行结果是?

来源:百度知道 编辑:UC知道 时间:2024/05/12 00:57:40
#include <stdio.h>
main()
{
int c;
while((c=getchar())!='\n')
switch(c-'2')
{ case0;
case1:putchar(c+4);
case2:putchar(c+4);break;
case3:putchar(c+3);
default:putchar(c+2);break;
}
printf("\n");
}

输入2473回车 运行结果?
答案是668977,怎么出来这么大的数?不解

case 0后应是冒号。输入的是2473,输入2,c-'2'为0,执行case1:putchar(c+4);和case2:putchar(c+4);两句,输出66。输入4,c-'2'为2,执行case2:putchar(c+4);输出8。输入7,c-'2'为5,执行default:putchar(c+2);输出9。输入3,c-'2'为1,执行case1:putchar(c+4); case2:putchar(c+4);,输出77。
每次执行case都是遇到break结束。

你定义的C 是 int 型的,但是 getchar()接收到的是字符的这就说
当你输入的数c+2小于10时结果是正确的但是当你大于十时结果就不能欲见了出现错误。getchar()在C大于10后接收的是两个以上的字符